home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tt.d64 / ponzo tutor-4.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  16KB  |  519 lines

  1. 0 REM" PONZO*82*WATERLOO
  2. 1 [143]"
  3. 50 POKE53281,15:POKE53280,12:PRINT"[144]"
  4. 100 PRINT"[147]              C64 TUTOR-4
  5. 101 [153]"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^"
  6. 102 [153]"(null)           INSIDE THE C64           WAIT (null)":MS$[178]" WELCOME! "
  7. 103 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPSTOP"
  8. 1000 [141]60000:[141]63100:[141]63000
  9. 1005 [153]"LOADC64 MEMORY"
  10. 1010 [153]"MEMORY RUNS FROM 0 TO 65535 (DECIMAL)"
  11. 1020 [153]"OR 0000 TO FFFF (HEXADECIMAL)"
  12. 1030 [153]"(WRITTEN $0000 $FFFF)"
  13. 1040 [153]"SOME IS FOR YOU..SOME FOR ME."
  14. 1050 [153]"(ABOUT HALF/HALF)"
  15. 1060 [153]"LET ME SHOW YOU..."
  16. 1070 [141]63000
  17. 1080 [153]"LOADBOTTOM HALF OF MEMORY"
  18. 1090 [153]"DECIMAL HEX"
  19. 1100 [153]"32768=$8000-SPC(SPC(SPC(SPC(SPC(SPC(_TOP OF BASIC MEMORY"
  20. 1110 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
  21. 1120 [153]"            - - -  +"
  22. 1125 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)"
  23. 1130 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)BASIC"
  24. 1140 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)PROGRAMS"
  25. 1150 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_(null)IN HERE"
  26. 1155 [153]" 2048=$0800-SPC(SPC(SPC(SPC(SPC(SPC(_BASIC MEMORY STARTS"
  27. 1160 [153]" 2047=$07FF-SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$SCREEN MEMORY"
  28. 1170 [153]" 1024=$0400-SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
  29. 1190 [153]" 1023=$03FF SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
  30. 1200 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(  MY WORKSPACE"
  31. 1210 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)"
  32. 1220 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(  "
  33. 1230 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_POINTERS
  34. 1240 PRINT"            [166][166][166][166][166][166]_TO MAGIC
  35. 1250 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_MEMORY LOC'NS"
  36. 1260 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_FLAGS,ETC."
  37. 1270 [153]"            SPC(SPC(SPC(SPC(SPC(SPC("
  38. 1280 [153]"    0=$0000-SPC(SPC(SPC(SPC(SPC(SPC(_(null)BOTTOM"
  39. 1290 [141]63000
  40. 1300 [153]"LOADI STORE BYTES READ FROM A DATASETTE"
  41. 1310 [153]"IN 'BUFFERS' UNTIL I GET ENOUGH"
  42. 1320 [153]"TO STUFF INTO 'BASIC MEMORY'"
  43. 1330 [153]"(IF THEY'RE BASIC PROGRAMS)."
  44. 1340 [153]"THESE ARE (USUALLY) NICE PLACES TO PUT"
  45. 1350 [153]"MACHINE LANGUAGE PROGRAMS."
  46. 1360 [153]"WHEN YOU DEFINE VARIABLES X,Y,A(I),ETC."
  47. 1370 [153]"I STORE THEM AFTER YOUR BASIC PROGRAM."
  48. 1380 [153]"WHEN YOU DEFINE STRINGS A$,C$(I),ETC."
  49. 1390 [153]"I STORE THEM AT THE 'TOP'."
  50. 1400 [153]"TO KEEP TRACK OF WHERE I PUT THINGS"
  51. 1410 [153]"I STORE POINTERS IN LOW MEMORY:"
  52. 1420 [141]63000
  53. 1430 [153]"LOADTHE ADDRESS OF"[163]25)" IS STORED AT"
  54. 1440 [153]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE"[163]25)"FREFREFREFREFREFREFREFREFREFREFREFREFREFRE"
  55. 1450 [153]"START OF BASIC"[163]25)"43/44 =$2B/$2C"
  56. 1460 [153]"^(USUALLY 2049=$0801)"
  57. 1470 [153]"END OF PROGRAM"[163]25)"45/46 =$2D/$2E"
  58. 1480 [153]"^(VARIES WITH PROGRAM)"
  59. 1485 [153]" (AND GIVES START OF )"
  60. 1486 [153]" (VARIABLES TOO)"
  61. 1487 [153]"BOTTOM OF STRINGS"[163]25)"51/52 =$33/$34"
  62. 1488 [153]"^(VARIES WITH PROGRAM)"
  63. 1489 [153]" ($7FFF & DOWN_STRINGS)"
  64. 1490 [153]"TOP OF BASIC RAM"[163]25)"55/56 =$37/$38"
  65. 1500 [153]"^(USUALLY 32768=$8000)"
  66. 1501 [153]"NOTE: THE 'TOP OF BASIC RAM' MAY BE AT"
  67. 1502 [153]"$A000..IF NO 'CARTRIDGE' IS INVOLVED."
  68. 1505 [153]"WE'LL COME BACK TO THESE POINTERS LATER!"
  69. 1510 [141]63000
  70. 1520 [153]"LOADTOP HALF OF MEMORY"
  71. 1530 [153]"DECIMAL HEX"
  72. 1540 [153]"65535=$FFFF-SPC(SPC(SPC(SPC(SPC(SPC(_TOP OF MEMORY"
  73. 1550 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
  74. 1560 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)RAM &"
  75. 1565 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)ROM"
  76. 1570 [153]"49152=$C000 SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
  77. 1575 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
  78. 1576 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)BASIC"
  79. 1577 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)INTERPRETER"
  80. 1578 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)"
  81. 1580 [153]"40960=$A000 SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
  82. 1590 [153]"            SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$_ MAY BE"
  83. 1595 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)USED BY"
  84. 1596 [153]"            SPC(SPC(SPC(SPC(SPC(SPC( (null)CARTRIDGE"
  85. 1600 [153]"32768=$8000 SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
  86. 1660 [141]63000
  87. 1750 [153]"LOAD     HOW BASIC PROGRAMS ARE STORED"
  88. 1760 [153]"RECALL THAT BASIC PROGRAMS (NORMALLY)"
  89. 1770 [153]"GO INTO MEMORY STARTING AT $0801(HEX)."
  90. 1780 [153]"LET'S LOOK AT THE BYTES THERE FOR THE"
  91. 1790 [153]"SIMPLE PROGRAM:"
  92. 1800 [153]"10 FORI=1TO10   "
  93. 1810 [153]"20 PRINT"[199](34)"*"[199](34)":NEXT"
  94. 1820 [153]"WE'LL SYS2048WAIT TO GET TO THE MLM"
  95. 1830 [153]"THEN WE'LL .M 0800-0820WAIT TO DISPLAY"
  96. 1840 [153]"THE MEMORY HOLDING THIS SIMPLE PROGRAM."
  97. 1845 [141]63000:[153]"LOADFOR:"
  98. 1846 [153]"10 FORI=1TO10   "
  99. 1847 [153]"20 PRINT"[199](34)"*"[199](34)":NEXT"
  100. 1848 [153]"WE'LL GET:"
  101. 1850 [153]" .:  0800 00 0D 08 0A 00 81 49 B2
  102. 1860 PRINT" .:  0808 31 A4 31 30 00 18 08 14
  103. 1870 [153]" .:  0810 00 99 22 2A 22 3A 82 00
  104. 1880 PRINT" .:  0818 00 00 AA AA AA AA AA AA
  105. 1890 SD$[178]"":CL$[178]"WAIT                                      WAIT"
  106. 1891 SR$[178]""
  107. 1900 SD[178]8:SR[178]10:CC$[178]"00":[141]55000
  108. 1910 [153]SD$"I ALWAYS HAVE 00WAIT HERE."
  109. 1920 [153]"THAT'S WHY 'SYS2048' WORKS!"
  110. 1930 [141]62000
  111. 1931 [141]55010
  112. 1950 SD[178]8:SR[178]13:CC$[178]"0D 08":[141]55000
  113. 1960 [153]SD$"THIS IS THE ADDRESS OF THE NEXTWAIT"
  114. 1970 [153]"BASIC INSTRUCTION."
  115. 1980 [141]62000
  116. 1981 [141]55010
  117. 1990 SD[178]8:SR[178]19:CC$[178]"0A 00":[141]55000
  118. 2000 [153]SD$"THIS IS THE LINE NUMBER 10WAIT"
  119. 2010 [153]" IN HEX."
  120. 2020 [141]62000
  121. 2021 [141]55010
  122. 2030 SD[178]8:SR[178]25:CC$[178]"81":[141]55000
  123. 2040 [153]SD$"THIS IS THE 'TOKEN' FOR";
  124. 2050 [153]" FORWAIT"
  125. 2060 [141]62000
  126. 2061 [141]55010
  127. 2066 [141]55010
  128. 2070 SD[178]8:SR[178]28:CC$[178]"49":[141]55000
  129. 2080 [153]SD$"THIS IS THE ASCII CODE FOR";
  130. 2090 [153]" IWAIT"
  131. 2100 [141]62000
  132. 2101 [141]55010
  133. 2110 SD[178]8:SR[178]31:CC$[178]"B2":[141]55000
  134. 2120 [153]SD$"THIS IS THE ASCII CODE FOR";
  135. 2130 [153]" =WAIT"
  136. 2140 [141]62000
  137. 2141 [141]55010
  138. 2150 SD[178]9:SR[178]10:CC$[178]"31":[141]55000
  139. 2160 [153]SD$"THIS IS THE ASCII CODE FOR";
  140. 2170 [153]" 1WAIT"
  141. 2180 [141]62000
  142. 2181 [141]55010
  143. 2190 SD[178]9:SR[178]13:CC$[178]"A4":[141]55000
  144. 2200 [153]SD$"THIS IS THE 'TOKEN' FOR";
  145. 2210 [153]" TOWAIT"
  146. 2220 [141]62000
  147. 2221 [141]55010
  148. 2230 SD[178]9:SR[178]16:CC$[178]"31":[141]55000
  149. 2240 [153]SD$"THIS IS THE ASCII CODE FOR";
  150. 2250 [153]" 1WAIT(AGAIN)"
  151. 2260 [141]62000
  152. 2261 [141]55010
  153. 2270 SD[178]9:SR[178]19:CC$[178]"30":[141]55000
  154. 2280 [153]SD$"THIS IS THE ASCII CODE FOR";
  155. 2290 [153]" 0WAIT"
  156. 2300 [141]62000
  157. 2301 [141]55010
  158. 2310 SD[178]9:SR[178]22:CC$[178]"00":[141]55000
  159. 2320 [153]SD$"THIS IS THE BYTE MEANING"
  160. 2330 [153]"END OF STATEMENTWAIT."
  161. 2340 [141]62000
  162. 2341 [141]55010
  163. 2350 SD[178]9:SR[178]25:CC$[178]"18 08":[141]55000
  164. 2360 [153]SD$"THESE POINT TO ADDRESS OF"
  165. 2370 [153]"THE NEXTWAIT STATEMENT"
  166. 2380 [141]62000
  167. 2391 [141]55010
  168. 2410 [153]SD$"THIS 2ND STATEMENT BEGINS"
  169. 2420 [153]"AT $080D AS NOTED EARLIER."
  170. 2430 SD[178]8:SR[178]13:CC$[178]"0D 08":[141]55000
  171. 2435 [129]I[178]1[164]50:[130]
  172. 2440 [141]55010
  173. 2450 [161]A$:[139]A$[178]""[167]2430
  174. 2460 [153]SD$CL$:[153]CL$:[153]CL$
  175. 2465 SD[178]9:SR[178]25:CC$[178]"18 08":[141]55000
  176. 2470 [153]SD$"THE ADDRESS OF THE 'NEXT' STATEMENT"
  177. 2480 [153]"IS GIVEN LO-BYTEWAIT THEN HI-BYTEWAIT."
  178. 2490 [153]"IT'S (LO-BYTE)+256*(HI-BYTE)."
  179. 2500 [141]62000
  180. 2501 [141]55010
  181. 2510 [153]SD$"..SAME FOR THE 'STATEMENT NUMBER'."
  182. 2520 SD[178]8:SR[178]19:CC$[178]"0A 00":[141]55000
  183. 2525 [129]I[178]1[164]50:[130]
  184. 2530 SD[178]8:SR[178]19:CC$[178]"0A 00":[141]55000
  185. 2535 [161]A$:[139]A$[178]""[167]2520
  186. 2540 [141]62000
  187. 2541 [141]55010
  188. 2550 [153]SD$"THEN COMES 2 BYTES FOR THE "
  189. 2560 [153]"STATEMENT NUMBER 20WAIT"
  190. 2570 [153]"(1ST BYTE)+256*(2ND BYTE)"
  191. 2575 SD[178]9:SR[178]31:CC$[178]"14":[141]55000
  192. 2576 SD[178]10:SR[178]10:CC$[178]"00":[141]55000
  193. 2580 [141]62000
  194. 2581 [153][200](SD$,9)[163]31)"14"
  195. 2582 [153][200](SD$,10)[163]10)"00"
  196. 2590 SD[178]10:SR[178]13:CC$[178]"99":[141]55000
  197. 2600 [153]SD$"THIS IS THE 'TOKEN' FOR PRINTWAIT"
  198. 2610 [141]62000
  199. 2611 [141]55010
  200. 2620 SD[178]10:SR[178]16:CC$[178]"22":[141]55000
  201. 2630 [153]SD$"THIS IS THE ASCII CODE FOR "[199](34)
  202. 2640 [141]62000
  203. 2641 [141]55010
  204. 2650 SD[178]10:SR[178]19:CC$[178]"2A":[141]55000
  205. 2660 [153]SD$"THIS IS THE ASCII CODE FOR *WAIT"
  206. 2670 [141]62000
  207. 2671 [141]55010
  208. 2680 SD[178]10:SR[178]22:CC$[178]"22":[141]55000
  209. 2690 [153]SD$"..THE ASCII CODE FOR "[199](34):[153]"...AGAIN"
  210. 2700 [141]62000
  211. 2701 [141]55010
  212. 2710 SD[178]10:SR[178]25:CC$[178]"3A":[141]55000
  213. 2720 [153]SD$"THE ASCII CODE FOR :WAIT"
  214. 2730 [141]62000
  215. 2731 [141]55010
  216. 2740 SD[178]10:SR[178]28:CC$[178]"82":[141]55000
  217. 2750 [153]SD$"THE TOKEN FOR NEXTWAIT"
  218. 2760 [141]62000
  219. 2761 [141]55010
  220. 2770 SD[178]10:SR[178]31:CC$[178]"00":[141]55000
  221. 2780 SD[178]11:SR[178]10:CC$[178]"00 00":[141]55000
  222. 2790 [153]SD$"THE 3 ZERO BYTES SAY"
  223. 2800 [153]"END OF THE PROGRAMWAIT!"
  224. 2810 [141]62000
  225. 2811 [153][200](SD$,10)[163]31)"00"
  226. 2812 [153][200](SD$,11)[163]10)"00 00"
  227. 2820 [141]62000
  228. 2830 SD[178]10:SR[178]31:CC$[178]"00":[141]55000
  229. 2840 [153]SD$"THIS ONE IS THE NORMAL"
  230. 2850 [153]"END OF STATEMENTWAIT"
  231. 2860 [141]62000
  232. 2861 [141]55010
  233. 2862 SD[178]11:SR[178]10:CC$[178]"00 00":[141]55000
  234. 2870 [153]SD$"THESE GIVE 00 00WAIT AS A LINK"
  235. 2880 [153]"TO THE 'NEXT' STATEMENT."
  236. 2890 [153]"MEANING NO NEXT STATEMENTWAIT."
  237. 2900 [141]62000
  238. 2901 [141]55010
  239. 2902 [153][200](SD$,11)[163]16)"AA AA AA AA AA AAWAIT"
  240. 2910 [153]SD$"THE BUNCH OF AAWAITS IS JUST......."
  241. 2920 [153]"GARBAGE!"
  242. 2940 [141]62000:[153]"LOAD": MS$[178]"AA AA AA":[141]63100
  243. 2950 [153]"LOADIF YOU REALLYCMDCMDCMDCMDCMDCMDFREFREFREFREFREFREON WANTED TO YOU"
  244. 2960 [153]"COULD ENTER THE MLM WITH SYS2048"
  245. 2970 [153]"AND WRITE (OR CHANGE) A BASIC PROGRAM"
  246. 2980 [153]"BY SIMPLY ENTERING THE APPROPRIATE"
  247. 2990 [153]"BYTES (IN HEX!) INTO THE RIGHT LOC'NS!"
  248. 3000 [153]"..BUT LEARN YOUR ASCII CODE.."
  249. 3010 [153]"AND THE SINGLE-BYTE 'TOKENS' I USE"
  250. 3020 [153]"TO IDENTIFY THE VARIOUS BASIC COMMANDS"
  251. 3030 [153]"LIKE PRINTWAIT,FORWAIT,NEXTWAIT,RUNWAIT,LISTWAIT,ETC."
  252. 3040 [153]"(TRY IT AFTERCMDCMDCMDCMDCMDFREFREFREFREFREON YOU END TUTOR)"
  253. 3050 [141]63000:[141]40000:[141]5000
  254. 4000 [153]"LOADNOW...      **********"
  255. 4001 [153]"            * A TEST *
  256. 4002 PRINT"            **********"
  257. 4003 FORI=1TO500:NEXT:MS$=" A TEST?![146]":GOSUB63100
  258. 4010 PRINT"I'LL ASK YOU QUESTIONS ABOUT MYSELF.":MS$="GOOD!GOOD!"
  259. 4020 PRINT"IF THE ANSWER IS AN 'ADDRESS' OR"
  260. 4030 PRINT"MEMORY LOCATION GIVE IT TO ME AS A"
  261. 4040 PRINT"4 DIGIT HEX NUMBER WITH $"
  262. 4050 PRINT"(LIKE $1234)"
  263. 4060 PRINT"...UNLESS OTHERWISE SPECIFIED!"
  264. 4070 GOSUB50000:GOSUB63000
  265. 4080 FORN=1TOQQ:PRINT"[147]"Q$(N)
  266. 4085 GETA$:IFA$<>""THEN4085
  267. 4090 INPUT"   [214][157][157][157]";A$:PRINT""
  268. 4100 IFA$=A$(N)THENGOSUB63100:PRINT"":GOTO4120
  269. 4110 PRINTAN$A$(N)
  270. 4120 PRINT""M$(N):GOSUB63000:NEXT
  271. 4130 PRINT"[147]WANT TO TAKE THE **TEST** AGAIN?"
  272. 4140 INPUT"   Y[157][157][157]";A$
  273. 4150 IFA$="Y"THENPRINT"[147]":GOTO4080
  274. 4160 GOTO39999
  275. 5000 PRINT"[147]AFTER RUNNING A PROGRAM LIKE:":QT$=CHR$(34):GOSUB63900
  276. 5010 PRINT" 10 AB$=STR$(7)"
  277. 5020 PRINT"LET'S SEE WHERE I PUT THE STRING '7'."
  278. 5030 PRINT"WE'LL TYPE SYS2048[146] THEN"
  279. 5040 PRINT".M 0800-0830[146] TO SEE THE PROGRAM"
  280. 5050 PRINT".M 7FF8-7FFF[146] TO SEE THE STRING."
  281. 5060 GOSUB63000:PRINT"[147]";
  282. 6001 PRINT".:  0800 00 0E 08 0A 00 41 42 24
  283. 6002 [153]".:  0808 B2 C4 28 37 29 00 00 00
  284. 6003 PRINT".:  0810 41 C2 02 FC 7F 00 00 AA
  285. 6004 [153]".:  0818 AA AA AA AA AA AA AA AA
  286. 6005 PRINT".:  7FF8 AA AA AA AA 20 37 12 04
  287. 6100 SD[178]3:SR[178]24:CC$[178]"00 00 00":[141]55000
  288. 6110 [153]SD$"THESE ARE THE 3 '00'-BYTES THAT END"
  289. 6120 [153]"THE PROGRAM."
  290. 6130 [141]62000:[141]55010
  291. 6140 SD[178]4:SR[178]9:CC$[178]"41 C2":[141]55000
  292. 6150 [153]SD$"41WAIT='A' IN ASCII"
  293. 6160 [153]"42WAIT='B'..BUT $80 IS ADDED"
  294. 6170 [153]"INDICATING A STRINGWAIT, GIVING C2WAIT"
  295. 6180 [141]62000:[141]55010
  296. 6190 SD[178]4:SR[178]15:CC$[178]"02":[141]55000
  297. 6200 [153]SD$"THE STRING AB$ IS 02WAIT BYTES LONG."
  298. 6210 [141]62000:[141]55010
  299. 6220 SD[178]4:SR[178]18:CC$[178]"FC 7F":[141]55000
  300. 6230 [153]SD$"AND IT'S LOCATED AT $7FFCWAIT."
  301. 6240 [141]62000:[141]55010
  302. 6250 SD[178]8:SR[178]21:CC$[178]"20 37":[141]55000
  303. 6260 [153]SD$"HERE, AT $7FFC, IS AB$."
  304. 6270 [153]"AB$ IS:20WAIT='SPACE'+37WAIT='7'"
  305. 6280 [141]62000:[141]55010
  306. 6290 SD[178]8:SR[178]27:CC$[178]"12 08":[141]55000
  307. 6300 [153]SD$"AND WHERE DOES IT SAY IT'S"
  308. 6310 [153]"2 BYTES LONG?"
  309. 6320 [153]"..AT MEMORY LOC'N $0812WAIT!"
  310. 6330 SD[178]4:SR[178]15:CC$[178]"02":[141]55000
  311. 6340 [141]55010:[161]A$:[139]A$[178]""[167]6330
  312. 6350 [153]"LOADIF, HOWEVER, YOUR PROGRAM WAS:"
  313. 6360 [153]" 10 AB$="QT$"7"QT$
  314. 6370 [153]"WHERE DO YOU THINK THE POINTER WILL"
  315. 6380 [153]"POINT TO?"
  316. 6390 [153]"NOTWAIT TO $7FFC, BUT TO THE LOCATION"
  317. 6400 [153]"IN THE BASIC PROGRAM ITSELF WHERE"
  318. 6410 [153]"'7' IS LOCATED."
  319. 6415 [141]62000
  320. 6420 [153]SD$"THAT IS, TO $080AWAIT"
  321. 6425 [153]"..AND IT WILL BE 1 BYTE LONG!"
  322. 6430 SD[178]3:SR[178]9:CC$[178]"7":[141]55000
  323. 6440 [141]55010:[161]A$:[139]A$[178]""[167]6430
  324. 6450 [142]
  325. 39999 [153]"LOAD":MS$[178]"AU REVOIR!WAIT":[141]63100:[153]"":[128]
  326. 40000 [153]"LOADLET'S LOOK AT SOME POINTERS":[141]63900
  327. 40005 [153]"BEFORE WRITING ANYCMDCMDCMDFREFREFREON PROGRAM"
  328. 40006 [153]"(AFTER FIRST TURNING ON THE C64)"
  329. 40010 [153]"WE'LL SYS2048WAIT TO GET INTO THE MLM.."
  330. 40020 [153]"THEN .M 002B 0033WAIT..."
  331. 40030 [153]"B*
  332. 40031 PRINT"     PC  SR AC XR YR SP"
  333. 40032 PRINT".;  0801 32 04 5E 00 F8"
  334. 40033 PRINT".M 002B 0033"
  335. 40034 PRINT".:  002B 01 08 03 08 03 08 03 08"
  336. 40035 PRINT".:  0033 00 80 00 00 00 80 00 FF"
  337. 40036 PRINT".X _ =EXIT...REMEMBER?"
  338. 40040 SD=14:SR=09:CC$="01 08":GOSUB55000
  339. 40050 PRINTSD$"THIS SAYS BASIC PROGRAMS START"
  340. 40060 PRINT"AT $0801..READ IT BACKWARDS!"
  341. 40070 GOSUB62000:GOSUB55010
  342. 40080 SD=14:SR=15:CC$="03 08":GOSUB55000
  343. 40090 PRINTSD$"THIS SAYS THE NIL-PROGRAM ENDS"
  344. 40100 PRINT"AT $0803..AFTER 3 '00' BYTES!"
  345. 40110 GOSUB62000:GOSUB55010
  346. 40120 SD=14:SR=21:CC$="03 08":GOSUB55000
  347. 40130 PRINTSD$"THIS SAYS ARRAYS START"
  348. 40140 PRINT"AT $0803 TOO..NO ARRAYS YET!"
  349. 40150 GOSUB62000:GOSUB55010
  350. 40160 SD=14:SR=27:CC$="03 08":GOSUB55000
  351. 40170 PRINTSD$"THIS SAYS ARRAYS END"
  352. 40180 PRINT"AT $0803 TOO..NO ARRAYS YET[146]!"
  353. 40190 GOSUB62000:GOSUB55010
  354. 40200 SD=15:SR=09:CC$="00 08":GOSUB55000
  355. 40210 PRINTSD$"THIS SAYS STRINGS GO DOWN"
  356. 40220 PRINT"TO $8000..NO STRINGS YET[146]!"
  357. 40230 GOSUB62000:GOSUB55010
  358. 40240 SD=15:SR=15:CC$="00 00":GOSUB55000
  359. 40250 PRINTSD$"THIS POINTER (TO CURRENT STRING)"
  360. 40260 PRINT"WE'LL IGNORE."
  361. 40270 GOSUB62000:GOSUB55010
  362. 40280 SD=15:SR=21:CC$="00 80":GOSUB55000
  363. 40290 PRINTSD$"THIS SAYS 'TOP OF BASIC RAM' IS"
  364. 40300 PRINT"AT $8000..OF COURSE."
  365. 40310 GOSUB62000:GOSUB55010
  366. 40320 SD=15:SR=27:CC$="14 FF":GOSUB55000
  367. 40330 PRINTSD$"THIS IS THE CURRENT BASIC "
  368. 40340 PRINT"LINE NUMBER..IGNORE!"
  369. 40350 GOSUB62000:GOSUB55010
  370. 40360 PRINT"[147]OK..NOW WE'LL WRITE A SHORT PROGRAM[146]:":FORI=1TO500:NEXT
  371. 40370 PRINT"10 FORI=1TO10:A(I)=I*I:A$(I)=STR$(I)"
  372. 40380 PRINT"20 PRINT"CHR$(34)"+"CHR$(34)":NEXT                    "
  373. 40390 PRINT"THEN, BEFORE[157][157][157][157][157][157][184][184][184][184][184][184][145] RUNNING IT"
  374. 40400 PRINT"WE'LL SYS2048[146]:"
  375. 40410 PRINT"B*
  376. 40420 [153]"     PC  SR AC XR YR SP"
  377. 40430 [153]".;  0801 32 04 5E 00 F8"
  378. 40440 [153]".M 002B 0033"
  379. 40450 [153]".:  002B 01 08 2E 08 2E 08 2E 08"
  380. 40460 [153]".:  0033 00 80 DA 7F 00 80 14 FF"
  381. 40470 [153]".X"
  382. 40480 SD[178]14:SR[178]09:CC$[178]"01 08":[141]55000
  383. 40490 [153]SD$"THE BASIC PROGRAM STARTS"
  384. 40500 [153]"AT $0801..OF COURSE!"
  385. 40510 [141]62000:[141]55010
  386. 40520 SD[178]14:SR[178]15:CC$[178]"2E 08":[141]55000
  387. 40530 [153]SD$"THE BASIC PROGRAM ENDS"
  388. 40540 [153]"AT $082E..AFTER THE 3 '00' BYTES."
  389. 40550 [141]62000:[141]55010
  390. 40560 SD[178]14:SR[178]21:CC$[178]"2E 08 2E 08":[141]55000
  391. 40570 [153]SD$"NO VARIABLES, NO ARRAYS OR"
  392. 40580 [153]"STRINGS CREATED YET."
  393. 40590 [141]62000:[141]55010
  394. 40600 SD[178]15:SR[178]09:CC$[178]"00 80 DA 7F 00 80 14 FF":[141]55000
  395. 40610 [153]SD$"NOTHING WORTH NOTING (!)"
  396. 40620 [153]"HAS HAPPENED YET."
  397. 40630 [141]62000:[141]55010
  398. 40640 [153]SD$"NOWWAIT WE'LL RUNCMDCMDCMDFREFREFREON THE PROGRAM:"
  399. 40650 [153]"WATCH...."
  400. 40655 [153]"                                    "
  401. 40656 [153]"10 FORI=1TO10:A(I)=I*I:A$(I)=STR$(I)"
  402. 40657 [153]"20 PRINT"[199](34)"+"[199](34)":NEXT"
  403. 40658 [129]I[178]1[164]5:[153]"                                     ":[130]
  404. 40660 [141]62000:[141]55010
  405. 40670 SD[178]14:SR[178]09:CC$[178]"01 08":[141]55000
  406. 40680 [153]SD$"START OF BASIC WON'T CHANGE"
  407. 40690 [141]62000:[141]55010
  408. 40700 SD[178]14:SR[178]15:CC$[178]"2E 08":[141]55000
  409. 40710 [153]SD$"END OF BASIC WON'T CHANGE"
  410. 40720 [153]"(IT'S ALSO 'START OF VARIABLES)"
  411. 40730 [141]62000:[141]55010
  412. 40740 SD[178]14:SR[178]21:CC$[178]"35 08 9B 08":[141]55000
  413. 40750 [153]SD$"ARRAY A(I) IS STORED FROM"
  414. 40760 [153]"$0835 AND 'UP'."
  415. 40770 [141]62000
  416. 40771 [153]SD$"IT ACTUALLY ENDS AT $0872"
  417. 40772 [153]"AND INFO ON WHERE A$(I) IS STORED"
  418. 40773 [153]"GOES INTO $0873-$089B."
  419. 40774 [141]62000:[141]55010
  420. 40780 SD[178]15:SR[178]09:CC$[178]"D7 7F":[141]55000
  421. 40790 [153]SD$"ARRAY A$(I) IS STORED FROM"
  422. 40800 [153]"$8000 (REALLY $7FFF) DOWNWAIT T0 $7FD7"
  423. 40810 [141]62000
  424. 40820 [153]SD$"REMEMBER..THE LOC'NS OF A$(I)"
  425. 40830 [153]"ARE KEPT IN $0873-$089B"
  426. 40840 [141]62000
  427. 40850 [153]SD$"THE STRINGS THEMSELVES='1'-'10'"
  428. 40860 [153]"ARE STORED IN $7FD7-$7FFF."
  429. 40870 [141]62000:[141]55010
  430. 40875 SD[178]14:SR[178]15:CC$[178]"2E 08 35 08":[141]55000
  431. 40880 [153]SD$"SOWAIT...THE VALUE OF 'I' IS STORED"
  432. 40890 [153]"IN 7 BYTES FROM $082E TO $0834"
  433. 40900 [141]62000
  434. 40910 [153]SD$"2 BYTES FOR IT'S NAME:IWAIT"
  435. 40920 [153]"5 BYTES FOR IT'S VALUE=1,THEN 2,ETC."
  436. 40930 [141]62000:[141]55010
  437. 40940 SD[178]14:SR[178]21:CC$[178]"35 08 9B 08":[141]55000
  438. 40950 [153]SD$"VALUES OF  A(I) GO INTO LOC'NS"
  439. 40960 [153]"$0835-$0872 (INCLUDING 2 BYTES"
  440. 40970 [153]"FOR IT'S NAME AWAIT)"
  441. 40980 [141]62000
  442. 40990 [153]SD$"THE LAST PART OF THE RANGE"
  443. 41000 [153]"$0835-$089B IS TO KEEP TRACK OF"
  444. 41010 [153]"WHERE EACH A$(I) IS STORED IN HI RAM."
  445. 41020 [141]62000:[141]55010
  446. 41030 [153]SD$"IF YOU TYPE CLRWAIT AFTER RUNWAITING"
  447. 41040 [153]"THE PROGRAM,ALL VARIABLES,ARRAYS AND"
  448. 41050 [153]"STRINGS GET CLEARED."
  449. 41060 [141]62000
  450. 41070 [153]SD$"THE ABOVE POINTERS REVERT TO..."
  451. 41080 [141]62000
  452. 41090 SD[178]14:SR[178]09:CC$[178]"01 08 2E 08 2E 08 2E 08":[141]55010
  453. 41100 SD[178]15:SR[178]09:CC$[178]"00 80 DA 7F 00 80 14 FF":[141]55010
  454. 41110 [153]SD$"JUST THE PROGRAM..FROM $0801"
  455. 41120 [153]"TO $082E"
  456. 41130 [141]62000
  457. 41140 [153]SD$"..AND GUESS WHAT HAPPENS IF YOU"
  458. 41150 [153]"TYPE NEWWAIT!!"
  459. 41160 [141]62000
  460. 41180 SD[178]14:SR[178]09:CC$[178]"01 08 03 08 03 08 03 08":[141]55010
  461. 41190 SD[178]15:SR[178]09:CC$[178]"00 80 DA 7F 00 80 14 FF":[141]55010
  462. 41200 [153]SD$"I PUT 00 00 00 INTO $0800-$0802"
  463. 41210 [153]"..AND THAT'S ALL FOLKS!"
  464. 41220 [141]62000:[153]"LOAD":MS$[178]"THAT'S ALL":[141]63100:[142]
  465. 50000 QQ[178]10:AN$[178]"ANSWER="
  466. 50001 A$(1)[178]"V2":[139][194](32768)[178]9 [167]A$(1)[178]"V4"
  467. 50004 [129]I[178]2[164]QQ:[135]A$(I):[130]
  468. 50005 [131] $A000,$0400,$0801,3,N,Y,$033C,Y,Y
  469. 51000 [129]I[178]1[164]QQ:[135]Q$(I):[130]
  470. 51001 [131] "LOADWHAT BRAND OF BASIC HAVE I GOTWAIT V2/V4"
  471. 51002 [131] "LOADWHERE DO THE BASIC ROMS START"
  472. 51003 [131] "LOADWHERE DOES SCREEN MEMORY START"
  473. 51004 [131] "LOADWHERE DO BASIC PROGRAMS STARTWAIT"
  474. 51005 [131] "LOADBASIC PROGRAMS END IN ? ZERO BYTES"
  475. 51006 [131] "LOADPEEK(1025)+256*PEEK(1026)WAIT=1ST STATEMENT NUMBER(Y/N)"
  476. 51007 [131] "LOADSTRINGS ARE STORED AT TOP OF RAMWAIT(Y/N)"
  477. 51008 [131] "LOADTHE CASSETTE BUFFER STARTS WHERE"
  478. 51009 [131] "LOAD$002B/$002C=POINTER TO START OF BASICWAIT(Y/N)"
  479. 51010 [131] "LOAD$0037/$0038=POINTER TO TOPOF RAMWAIT(Y/N)"
  480. 52000 [129]Q[178]1[164]QQ:[135]M$(Q):[130]
  481. 52001 [131] IF PEEK(32768)=9 THEN IT'S V4.
  482. 52002 [131] FROM $A000 TO $BFFF.
  483. 52003 [131] T0 $07FF..JUST BEFORE START OF BASIC.
  484. 52004 [131] 2048=$0800 HAS '00'
  485. 52005 [131] THE 'LINK' IS 00 00.
  486. 52006 [131] ABOVE GIVES 'LINK' TO 2ND STATEMENT
  487. 52007 [131] THEY'RE STORED FROM $7FFF DOWN
  488. 52008 [131] DIRTY QUESTION!!
  489. 52009 [131] 43/44 IN DECIMAL
  490. 52010 [131] 55/56 IN DECIMAL
  491. 52999 [142]
  492. 55000 [153][200](SD$,SD)[200](SR$,SR)""CC$"WAIT":[142]
  493. 55010 [153][200](SD$,SD)[200](SR$,SR)CC$"WAIT":[142]
  494. 60000 [143] INITIALIZE
  495. 60001 BT$[178]"":[129]I[178]1[164]24:BT$[178]BT$[170]"":[130]
  496. 60002 PT$[178]"ORTANTANTANTANTANTANTANTANTANTAN^CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD/=TANTANTANTANTANTANTANTAN=EXP"
  497. 60003 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDFN============THEN"
  498. 60004 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)(null)ONONONONCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD"
  499. 60005 PT$[178]BT$[170]"ONONONONONON"[170]PT$[170]"STOP"
  500. 60007 ML$[178]""
  501. 60008 WD[178]40:CRT[178]1024:[153][199](142)
  502. 60009 W2[178]WD[173]2:W3[178]WD[171]1:W1$[178][202]([196](WD),2):[151]53281,15:[151]53280,12:[153]"STOP"
  503. 60010 W2$[178][202]([196](W2),2):W3$[178][202]([196](W3),2)
  504. 60020 [142]
  505. 62000 [141]63000
  506. 62001 [153]SD$CL$:[153]CL$:[153]CL$
  507. 62003 [142]
  508. 63000 [153]"HIT RETURNWAIT TO CONTINUE";
  509. 63001 [161]A$:[139]A$[179][177]""[167]63001
  510. 63002 [161]A$:[139]A$[178]""[167]63002
  511. 63003 [142]
  512. 63100 [129]T[178]1[164]5:[153]PT$MS$;
  513. 63101 [153]PT$"          ";
  514. 63102 [153]PT$MS$;:[130]
  515. 63103 [153]:[142]
  516. 63900 SD$[178]"":CL$[178]"WAIT                                      WAIT"
  517. 63901 SR$[178]""
  518. 63902 [142]
  519.